#include <stdio.h>
#include <stdlib.h>

#define kMaxSize 10000
#define NIL -1
typedef int ElemSet;

typedef int Position; /* 整型下标，表示元素的位置 */
typedef struct ListNode *List;
struct ListNode {
    ElemSet data[kMaxSize]; /* 存储数据的数组 */
    Position last; /* 线性表中最后一个元素在数组中的位置 */
};

/* 算法2-2：在顺序表list的第i个位置上插入元素x  Insert(list, i, x) */
void Insert(List list, Position i, ElemSet x) {
    /* 注意i代表位序，从1开始，不是数组下标 */
    int j;

    if (list->last == (kMaxSize - 1)) { /* 表满不能插入，退出 */
        printf("错误：表满不能插入。\n");
        return;
    }
    if ((i < 1) || (i > (list->last + 2))) { /* 插入位置不合法，退出 */
        printf("错误：插入位置不合法。\n");
        return;
    }
    for (j = list->last; j >= i - 1; j--) {
        list->data[j + 1] =
            list->data[j]; /* 将第i个到第n个元素顺序向后移动 */
    }
    list->data[i - 1] =
        x; /* 新元素插入，数组下标i-1对应第i个位置 */
    list->last++; /* list->last仍指向最后元素 */
}
/* 算法2-2 结束 */

int main(void) {
    int i, n, x;
    List list;

    list = (List)malloc(sizeof(struct ListNode));
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        scanf("%d", &list->data[i]);
    }
    list->last = n - 1;
    scanf("%d %d", &i, &x);
    Insert(list, i, x);
    for (i = 0; i <= list->last; i++) {
        printf("%d ", list->data[i]);
    }
    return 0;
}